package com.zg.scf.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.zg.common.core.vo.BaseVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * DESCRIPTION
 *
 * @author zhanfeng.liang
 * @since 2025-07-14
 */

@Data
@ApiModel(value = "铁路计划Vo")
public class RailwayPlanVo extends BaseVo {

    @ApiModelProperty(value = "主键ID", example = "1", notes = "数据库自增生成的唯一标识")
    private Long id;

    @ApiModelProperty(value = "计划号", example = "P20250719001", notes = "计划的唯一业务编号")
    private String planNo;

    @ApiModelProperty(value = "计划类型编码", example = "COAL", notes = "如运煤、运矿等类型编码")
    private String type;

    @ApiModelProperty(value = "收货单位名称", example = "钢铁公司", notes = "接收货物的单位名称")
    private String receiveUnit;

    @ApiModelProperty(value = "计划执行日期", example = "2025-07-20", notes = "计划开始执行的日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date planDate;

    @ApiModelProperty(value = "发站名称", example = "XX车站", notes = "货物出发的站点")
    private String departStation;

    @ApiModelProperty(value = "装车地点", example = "矿区一号装车点", notes = "货物装车的具体位置")
    private String loadingPoint;

    @ApiModelProperty(value = "矿点来源", example = "XX煤矿", notes = "货物所属的矿点")
    private String minePoint;

    @ApiModelProperty(value = "到站名称", example = "YY车站", notes = "货物到达的站点")
    private String arriveStation;

    @ApiModelProperty(value = "卖方单位", example = "煤炭销售公司", notes = "货物出售方的单位名称")
    private String seller;

    @ApiModelProperty(value = "车辆数量", example = "10", notes = "运输货物的车辆数目")
    private Integer trainCarCount;

    @ApiModelProperty(value = "货物吨数", example = "500.0", notes = "货物的总吨数，可保留小数")
    private BigDecimal quantity;

    @ApiModelProperty(value = "计划下达日期", example = "2025-07-19", notes = "计划正式下达的日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date issueDate;

    @ApiModelProperty(value = "所属公司", example = "XX运输集团", notes = "计划所属的公司名称")
    private String company;

    @ApiModelProperty(value = "所属局别", example = "XX铁路局", notes = "计划对应的铁路分局等局别信息")
    private String bureau;

    @ApiModelProperty(value = "计划运行状态", example = "已下达", notes = "如已下达、运输中、已完成等状态")
    private String runStatus;

    @ApiModelProperty(value = "煤种", example = "焦炭", notes = "如焦炭、coal等煤种")
    private String coalType;          // 煤种
}
